﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;

namespace PrintDemo
{
    ///   <summary>
    ///   POSPrinter   的摘要说明。
    ///   </summary>
    public class POSPrinter
    {
        const int OPEN_EXISTING = 3;
        string prnPort = "LPT1 ";
        [DllImport("kernel32.dll ", CharSet = CharSet.Auto)]
        private static extern IntPtr CreateFile(string lpFileName,
        int dwDesiredAccess,
        int dwShareMode,
        int lpSecurityAttributes,
        int dwCreationDisposition,
        int dwFlagsAndAttributes,
        int hTemplateFile);
        public POSPrinter()
        {
            //
            //   TODO:   在此处添加构造函数逻辑
            //
        }
        public POSPrinter(string prnPort)
        {
            this.prnPort = prnPort;//打印机端口
        }
        public string PrintLine(string str)
        {
            IntPtr iHandle = CreateFile(prnPort, 0x40000000, 0, 0, OPEN_EXISTING, 0, 0);
            if (iHandle.ToInt32() == -1)
            {
                return "没有连接打印机或者打印机端口不是  " + this.prnPort;
            }
            else
            {

                FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite);
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
                //sw.WriteLine(str)//写数据
                //开钱箱  Chr$(27)+"p0"+Chr$(50)+Chr$(250)
                sw.Write(((char)27).ToString() + "p" + ((char)0).ToString() + ((char)60).ToString() + ((char)255).ToString());
                sw.Close();
                fs.Close(); 
                return "";
            }
        }
    }
}
